package com.wex.cookbook.utils;

/**
 * @author wex
 */
public abstract class BaseRegexPatterns {
    /**
     * 手机号正则
     */
    public static final String PHONE_REGEX = "^1(3[0-9]|5[0-3,5-9]|7[1-3,5-8]|8[0-9])\\d{8}$";
    /**
     * 邮箱正则
     */
    public static final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
    /**
     * 密码正则。最少6位，包括至少1个大写字母，1个小写字母，1个数字和1个特殊字符
     */
    public static final String PASSWORD_REGEX = "^\\S*(?=\\S{6,})(?=\\S*\\d)(?=\\S*[A-Z])(?=\\S*[a-z])(?=\\S*[!@#$%^&*? ])\\S*$";
    /**
     * 验证码正则, 6位数字或字母
     */
    public static final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$";
    /**
     * 数字校验：只能是正整数
     */
    public static final String POSITIVE_INTEGER_REGEX = "^\\+?[1-9][0-9]*$";
    /**
     * 数字校验：只能是整数或浮点数
     */
    public static final String FLOAT_OR_INTEGER_REGEX = "^(-?\\d+)(\\.\\d+)?$";

    /**
     * 数字校验：数字
     */
    public static final String FIGURE_REGEX = "^[1-9]\\d*|0$";

    /**
     * 中文名称校验：仅支持中文及大小写英文
     */
    public static final String CHINESE_NAME_REGEX = "^[\\u4e00-\\u9fa5a-zA-Z]+$";

    /**
     * 英文名称校验：英文名称仅使用大小写英文、数字及_，且仅支持字母开头
     */
    public static final String ENGLISH_NAME_REGEX = "^[a-zA-Z][a-zA-Z0-9_]*$";

    /**
     * ip端口校验
     */
    public static final String IP_PORT_REGEX = "^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])(\\:([0-9]|[1-9]\\d{1,3}|[1-5]\\d{4}|6[0-5]{2}[0-3][0-5])){0,1}$";

    /**
     * 参数名称校验：仅使用大小写英文、数字，且仅支持字母开头
     */
    public static final String NAME_REGEX = "^[a-zA-Z][a-zA-Z0-9]*$";
}
